from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


def share_browser():
    # 创建Chrome配置选项
    chrome_options = Options()
    chrome_options.add_argument('--headless')  # 无头模式
    chrome_options.add_argument('--disable-gpu')  # 禁用GPU加速
    chrome_options.add_argument('--no-sandbox')  # Linux系统需要此参数
    chrome_options.add_argument('--disable-dev-shm-usage')  # 解决资源限制问题

    # 设置Chrome浏览器可执行文件路径（根据实际安装位置修改）
    path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path

    # 新版Selenium必须使用Service对象
    # 需要下载对应版本的chromedriver并配置路径
    service = Service(executable_path='chromedriver.exe')  # 替换为你的chromedriver路径

    # 创建浏览器实例（注意参数名改为options）
    browser = webdriver.Chrome(service=service, options=chrome_options)
    return browser


# 使用封装的浏览器
browser = share_browser()

url = 'https://www.baidu.com'
browser.get(url)

# 推荐使用显式等待代替time.sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素加载并截图
try:
    WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.ID, 'kw'))
    )
    browser.save_screenshot('baidu.png')
except Exception as e:
    print(f"截图失败: {e}")


# 关闭浏览器（推荐使用with语句自动管理资源）
browser.quit()